/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package pos.beans;

import entities.Cliente;
import entities.DescuentoCliente;
import entities.Usuario;
import facades.ClienteFacade;
import facades.TipoClienteFacade;
import java.io.Serializable;
import java.util.Date;
import javax.annotation.PostConstruct;
import javax.enterprise.context.SessionScoped;
import javax.enterprise.event.Event;
import javax.inject.Inject;
import javax.inject.Named;
import qualifiers.EventoEntidadCreada;
import qualifiers.UsuarioLogeado;

/**
 *
 * @author damfercer
 */
@Named
@SessionScoped
public class NuevoClienteBean implements Serializable{
    private Cliente nuevoCliente;
    @Inject
    private ClienteFacade clienteFacade;
    @Inject
    @UsuarioLogeado
    private Usuario usuarioLogeado;
    @Inject
    @EventoEntidadCreada
    private Event<Cliente> eventoNuevoCliente;
    private DescuentoCliente descuentoCliente;
    @Inject
    private TipoClienteFacade tipoClienteFacade;
   
    /**
     * Creates a new instance of NuevoProductoBean
     */
    public NuevoClienteBean() {
    }
    
    @PostConstruct
    public void init(){
        initCliente();
    }
    
    public void initCliente(){
        nuevoCliente=new Cliente();
        nuevoCliente.setTipoCliente(tipoClienteFacade.getTipoClienteParticular());
    }

    /**
     * @return the nuevoProducto
     */
    public Cliente getNuevoCliente() {
        return nuevoCliente;
    }

    /**
     * @param nuevoCliente the nuevoProducto to set
     */
    public void setNuevoCliente(Cliente nuevoCliente) {
        this.nuevoCliente = nuevoCliente;
    }
    
    public void crearCliente(){
        //TODO: QUÉ POLÍTICA SEGUIMOS PARA SABER SI UN CLIENTE EXISTE.
        //if(true){
            nuevoCliente.setUsuarioCreador(usuarioLogeado);
            nuevoCliente.setFechaAlta(new Date());
            if(getDescuentoCliente()!=null){
                nuevoCliente.setDescuento(getDescuentoCliente().getDescuento());
            }
            clienteFacade.create(nuevoCliente);
            eventoNuevoCliente.fire(nuevoCliente); 
            initCliente();
        /*}
        else{
            FacesContext context = FacesContext.getCurrentInstance();
            HttpServletRequest request = (HttpServletRequest)context.getExternalContext().getRequest();
            Locale locale=context.getViewRoot().getLocale();
            ResourceBundle rb = ResourceBundle.getBundle("messages", locale);
            String errorProductoDuplicado=rb.getString("ErrorC");
            FacesMessage msg =new FacesMessage(errorProductoDuplicado,errorProductoDuplicado);
            msg.setSeverity(FacesMessage.SEVERITY_ERROR);
            context.addMessage(null, msg);
            context.renderResponse();
        }*/
        
    }

    /**
     * @return the descuentoCliente
     */
    public DescuentoCliente getDescuentoCliente() {
        return descuentoCliente;
    }

    /**
     * @param descuentoCliente the descuentoCliente to set
     */
    public void setDescuentoCliente(DescuentoCliente descuentoCliente) {
        this.descuentoCliente = descuentoCliente;
    }
}
